home *** CD-ROM | disk | FTP | other *** search
/ PC World Interactive 7 / PC World Interactive 7.iso / program / ctutord.EXE / QUICK.C < prev    next >
C/C++ Source or Header  |  1992-10-09  |  2KB  |  136 lines

  1. /* quick.c */
  2. /* QUICKSORT    In 'C'                     */
  3. int    d[]={40,15,30,25,60,10,75,45,65,35,50,20,70,55};
  4. main()
  5. {
  6.     int    i;
  7.     printf("\nUnsorted: \n");
  8.     for(i=0; i<14; i++)
  9.         printf("%d ",d[i]);
  10.     quick(0,13);
  11.     printf("\nSorted: \n");
  12.     for(i=0; i<14; i++)
  13.         printf("%d ",d[i]);
  14.     printf("\n");
  15. }
  16. quick(left, right)
  17. int    left, right;
  18. {
  19.     int    i, j, k, x;
  20.     printf("\n\n%d %d",left,right);
  21.     if( left<right ){
  22.         if(d[left] > d[right]){
  23.             printf("\nSwap left with right \n");
  24.             swap(&d[left],&d[right]);
  25.             for(x=0; x<14; x++)
  26.                 printf("%d ",d[x]);
  27.         }
  28.         j=left; k=right;
  29.         do{
  30.             do{ j++;}while(d[j]<d[left]);
  31.             do{ k--;}while(d[k]>d[left]);
  32.             if( j<k ){
  33.                 swap(&d[j],&d[k]);
  34.                 printf("\nSWap left with right \n");
  35.                 for(x=0; x<14; x++)
  36.                     printf("%d ",d[x]);
  37.             }
  38.         }while( j<=k);
  39.         swap(&d[left],&d[k]);
  40.         printf("\nswap left with right \n");
  41.         for(x=0; x<14; x++)
  42.             printf("%d ",d[x]);
  43.         quick(left,k-1);
  44.         quick(k+1,right);
  45.     }
  46. }
  47. swap(a,b)
  48. int    *a, *b;
  49. {
  50.     int    j;
  51.     j=*a;
  52.     *a=*b;
  53.     *b=j;
  54. }
  55.  
  56. /*
  57.  
  58.     OUTPUT:
  59.  
  60.  
  61.  
  62. Unsorted: 
  63. 40 15 30 25 60 10 75 45 65 35 50 20 70 55 
  64.  
  65. 0 13
  66. SWap left with right 
  67. 40 15 30 25 20 10 75 45 65 35 50 60 70 55 
  68. SWap left with right 
  69. 40 15 30 25 20 10 35 45 65 75 50 60 70 55 
  70. swap left with right 
  71. 35 15 30 25 20 10 40 45 65 75 50 60 70 55 
  72.  
  73. 0 5
  74. Swap left with right 
  75. 10 15 30 25 20 35 40 45 65 75 50 60 70 55 
  76. swap left with right 
  77. 10 15 30 25 20 35 40 45 65 75 50 60 70 55 
  78.  
  79. 0 -1
  80.  
  81. 1 5
  82. swap left with right 
  83. 10 15 30 25 20 35 40 45 65 75 50 60 70 55 
  84.  
  85. 1 0
  86.  
  87. 2 5
  88. swap left with right 
  89. 10 15 20 25 30 35 40 45 65 75 50 60 70 55 
  90.  
  91. 2 3
  92. swap left with right 
  93. 10 15 20 25 30 35 40 45 65 75 50 60 70 55 
  94.  
  95. 2 1
  96.  
  97. 3 3
  98.  
  99. 5 5
  100.  
  101. 7 13
  102. swap left with right 
  103. 10 15 20 25 30 35 40 45 65 75 50 60 70 55 
  104.  
  105. 7 6
  106.  
  107. 8 13
  108. Swap left with right 
  109. 10 15 20 25 30 35 40 45 55 75 50 60 70 65 
  110. SWap left with right 
  111. 10 15 20 25 30 35 40 45 55 50 75 60 70 65 
  112. swap left with right 
  113. 10 15 20 25 30 35 40 45 50 55 75 60 70 65 
  114.  
  115. 8 8
  116.  
  117. 10 13
  118. Swap left with right 
  119. 10 15 20 25 30 35 40 45 50 55 65 60 70 75 
  120. swap left with right 
  121. 10 15 20 25 30 35 40 45 50 55 60 65 70 75 
  122.  
  123. 10 10
  124.  
  125. 12 13
  126. swap left with right 
  127. 10 15 20 25 30 35 40 45 50 55 60 65 70 75 
  128.  
  129. 12 11
  130.  
  131. 13 13
  132. Sorted: 
  133. 10 15 20 25 30 35 40 45 50 55 60 65 70 75 
  134.  
  135. */
  136.